home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / apps / sprdshts / opus200.lzh / OPUS200 / OPUS200.DOC < prev    next >
Text File  |  1989-03-17  |  78KB  |  1,783 lines

  1.  
  2.  
  3.  
  4.  
  5.                                      Opus v. 2.00
  6.                                     --------------
  7.                            Spreadsheet and Charting program
  8.                                    for the Atari ST
  9.  
  10.                                    by Doug Harrison
  11.  
  12.  
  13.           >>> Introduction
  14.  
  15.           Opus is a GEM spreadsheet and charting program, which I think 
  16.           you'll find powerful, fast, and easy to use. In order to keep this 
  17.           documentation to a reasonable length, I'll focus primarily on 
  18.           description of features, rather than provide a full tutorial 
  19.           (which probably isn't needed). Some of you may be familiar with 
  20.           the original version of Opus, which appeared in the Sept. 1988   
  21.           ST-Log. If you fall into this category, great! You can skip over 
  22.           the majority of the spreadsheet description, but please be sure to 
  23.           read the section on charts and the files INSTALL.DOC and 
  24.           CHANGES.DOC.
  25.  
  26.  
  27.           >>> Shareware
  28.  
  29.           Opus versions 2.00 and above are shareware. Opus version 2.00 is 
  30.           the result of about 8-9 months of additional work and includes 
  31.           many new features above and beyond the original; the charting 
  32.           facility is completely new, and the spreadsheet is much faster in 
  33.           all operations (for a description of most of the changes and 
  34.           additions, please see the file CHANGES.DOC). I plan on supporting 
  35.           Opus with at least one or two upgrades, and I will be available to 
  36.           answer questions through the mail and on Compuserve and GEnie. If 
  37.           you find Opus useful and wish to support my efforts, you can send 
  38.           a check for $15 (or whatever you feel the program is worth!) to:
  39.  
  40.           Doug Harrison
  41.           P.O. Box 66236
  42.           Baton Rouge, LA 70806-6236
  43.  
  44.           For quick response to questions, my Compuserve ID is 72277,2315 
  45.           and my GEnie mailbox address is D.S.HARRISON. There also is (or 
  46.           soon will be) an Opus topic in Category 2 of the GEnie message 
  47.           base.
  48.  
  49.  
  50.           >>> Distribution Policy
  51.  
  52.           You may freely distribute Opus (and please do), as long as all 
  53.           files and notices are included. It may be included as part of 
  54.           "shareware disks" provided by various groups, as long as no fee 
  55.           beyond media costs is charged.
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.           >>> Running Opus
  72.  
  73.           IF YOU READ NOTHING ELSE, PLEASE, PLEASE READ INSTALL.DOC!!!! Read 
  74.           it NOW, before you try to run Opus! It really and truly DOES 
  75.           contain ESSENTIAL information, OK?! (forgive my tone, I'm just 
  76.           speaking as I need to be spoken to...)
  77.  
  78.           Here's a list of the files Opus tries to load when it's executed, 
  79.           in order:
  80.  
  81.                1. OPUSMONO.RSC or OPUSCOLR.RSC (depending on monitor in use)
  82.                2. PRINTER.INF (printer control codes)
  83.                3. OPUS.CNF (configuration file, explained later)
  84.                4. screen fonts, provided GDOS is present
  85.                5. OPUS.WID (printer font widths file)
  86.  
  87.           Opus doesn't need to access the disk it was loaded from once it 
  88.           has booted. However, when printing charts on a floppy-based 
  89.           system, the disk containing the GDOS files must be present in the 
  90.           boot drive. Please see the section "Printing Charts" for details.
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.           March 12, 1989                 p. 2                   Opus v. 2.00
  132.  
  133.  
  134.  
  135.  
  136.  
  137.                    ///////////////////////////////////////////////
  138.                    /////             Worksheets              /////
  139.                    ///////////////////////////////////////////////
  140.  
  141.  
  142.  
  143.           Now that you've got Opus up and running, you should have a blank 
  144.           worksheet on your screen. Let's first take a look at "The Panel", 
  145.           the area directly underneath the menu bar.
  146.  
  147.  
  148.           >>> The Panel
  149.  
  150.           The Panel contains the following items, from left to right:
  151.  
  152.                1. the active cell or cell cursor location
  153.                2. an icon area, containing the "cell deletion" icon and 
  154.                     the "data entry" icon (the X and check-mark icons, 
  155.                     respectively)
  156.                3. the edit area, in which you enter data, consisting of two 
  157.                     50 column lines.
  158.  
  159.           The panel also may contain up to three additional icons, and these 
  160.           indicate various states. First, the "Circ" icon may appear should 
  161.           you enter a formula that contains or makes a circular cell 
  162.           reference (this icon may show up as "???" if Opus can't determine 
  163.           circularity- more on this later). Second, if the cell cursor is 
  164.           moved into a hidden cell, the "H" icon will appear. Finally, the 
  165.           "P" icon appears when the cell cursor is in a protected cell. A 
  166.           click on the "Circ" icon will present you with an alert box 
  167.           indicating the cell containing the circular reference, while 
  168.           clicking on the "H" or "P" icons will unhide or unprotect the 
  169.           active cell.
  170.  
  171.           If you want to delete the currently active cell, click on the 
  172.           cell-deletion icon. Similarly, to complete data entry into a cell, 
  173.           click on the data entry icon or press RETURN, ENTER, or any of the 
  174.           cursor keys.
  175.  
  176.  
  177.           >>> Data Entry
  178.  
  179.           Opus supports the three traditional spreadsheet cell classes: 
  180.           numbers, labels, and formulas. Unlike other spreadsheets which 
  181.           require you to precede a label with the apostrophe or formulas 
  182.           with plus or equal signs, Opus uses the function keys F8, F9, and 
  183.           F10 to change cell class. You may also perform this action from 
  184.           the Edit menu. Look under the Edit menu now, and note many items 
  185.           have keyboard equivalents. All menu items with corresponding 
  186.           keyboard commands have the commands listed to their right. If 
  187.           you're unsure of the meaning of some of the symbols, please look 
  188.           under the Help menu item and click on the Keyboard entry. Here, 
  189.           you will also find all the ways you can move about the 
  190.           spreadsheet. For a list of the various mouse functions, please 
  191.           refer to the Help item Mouse.
  192.  
  193.  
  194.  
  195.  
  196.  
  197.           March 12, 1989                 p. 3                   Opus v. 2.00
  198.  
  199.  
  200.  
  201.  
  202.  
  203.           >>> Cell Format
  204.  
  205.           Opus offers many options for cell format, and they are found under 
  206.           the Edit menu item. All but the number formatting options are 
  207.           found in the same dialog, and both of these dialogs reflect the 
  208.           state of the active cell when they are first displayed. To display 
  209.           this dialog, click on Justification under the Edit menu. The 
  210.           Justification button will be selected, indicating that this 
  211.           parameter is the one that will be changed. In order to alter the 
  212.           text style, for example, you must select that button as well. Now, 
  213.           consider the "extent" buttons, which allow you to specify whether 
  214.           the format changes should affect only one cell, a range, or the 
  215.           entire worksheet. For example, to change the justification of a 
  216.           range without altering other formatting within the range, make 
  217.           sure that the Justification button is the only one selected when 
  218.           you click on OK or press RETURN. Please note that the sparse 
  219.           matrix design requires any cell containing data or a format 
  220.           differing from the global format to *exist*, which means that it 
  221.           consumes memory. This makes it impossible to format an arbitrarily 
  222.           large range. However, you may certainly change the default cell 
  223.           format through the "Global" option, affecting all existing cells 
  224.           and all cells entered thereafter.
  225.  
  226.  
  227.           >>> Number Format
  228.  
  229.           Now, pull down the Edit menu and click on Number. This dialog 
  230.           functions just like the previous one; to select an attribute to be 
  231.           changed, you must click on its title. For example, to turn off 
  232.           commas, click on the line "Suppress Commas?", click on the box to 
  233.           its right (checking it), and then press OK or hit RETURN. 
  234.           Likewise, if you wish to change the precision, click on the 
  235.           "Precision" title. The "Format Strings" option allows you to 
  236.           specify a string that will be output on all numeric or formula 
  237.           cells possessing that attribute. For example, you could specify a 
  238.           format string "Part #", and any cell having that as part of its 
  239.           number format would be display as "Part #xxx", where xxx is its 
  240.           value. You can use the reverse apostrophe "`" (the key to the left 
  241.           of Backspace) to specify the value position within the format 
  242.           string; the default is to append the value to the end of the 
  243.           string. In order to make a new format string, click on the "Edit 
  244.           box," and then type in the string. When you're done, click on 
  245.           "Add." The string will appear in the scrollable list. To make the 
  246.           string part of a cell's format, click on the string within the 
  247.           scrollable list and also on the "Format Strings" title before 
  248.           exiting the dialog.
  249.  
  250.           The "Global Upper and Lower Limits" fields contain the values 
  251.           above and below which the cells will display as scientific 
  252.           notation. For example, if the global lower limit is 1E-3, any cell 
  253.           containing a value whose magnitude is less than 0.001 (but not 
  254.           equal to zero) will be displayed in scientific notation.
  255.  
  256.           Note: Many Opus dialogs use a worksheet range as a parameter. If a 
  257.           range was selected before the dialog was invoked, that range will 
  258.           appear in the "Begin" and "End" fields in the dialog. In the case 
  259.           of the format dialogs, the "Range" button will also be 
  260.           preselected. If a range was not selected, however, the extent of 
  261.  
  262.  
  263.           March 12, 1989                 p. 4                   Opus v. 2.00
  264.  
  265.  
  266.  
  267.  
  268.  
  269.           the format dialogs will be set to "Cell," meaning that the active 
  270.           cell alone will be affected (provided you don't override this). In 
  271.           the case of the Number format dialog, the "Use All" button will be 
  272.           preselected as well, so that you needn't click on all the 
  273.           attribute titles you want to alter.
  274.  
  275.  
  276.           >>> Block Commands
  277.  
  278.           A block or range is simply a rectangular group of one or more 
  279.           cells. You can select a block by dragging the mouse or clicking on 
  280.           the Start and End Block items under the Block menu. If you're 
  281.           using the mouse, the worksheet will scroll if you move off the 
  282.           working area. When a block is selected, several worksheet 
  283.           functions become available. The Show First Cell and Show Last Cell 
  284.           items under the Marks menu change to Show Block Start and Show 
  285.           Block End. Under the Block menu, Copy, Move, and Delete Block 
  286.           become available. Before discussing the items under the Block 
  287.           menu, let's take a look at the difference between relative and 
  288.           absolute cell references.
  289.  
  290.  
  291.           >>> Cell References
  292.  
  293.           Cell references within formulas are divided into relative and 
  294.           absolute types. A relative cell reference is written as A1, while 
  295.           absolute cell references are written as $A1, A$1, or $A$1. The 
  296.           dollar sign indicates whether the row or column part of the 
  297.           reference is to be considered absolute, meaning that it is "cast 
  298.           in stone" and will never be altered by any worksheet function, 
  299.           such as Move Block, Replicate Cell, or Insert Row. To clarify, 
  300.           consider the worksheet below:
  301.  
  302.                A    B
  303.           1    1   A1+1
  304.           2  B1+1  A2+1
  305.  
  306.           If you selected the range A1:B2 and then chose to move it to cell 
  307.           A3, the resultant worksheet would appear as follows:
  308.  
  309.                A    B
  310.           1
  311.           2
  312.           3    1   A3+1
  313.           4  B3+1  A4+1
  314.  
  315.           As you can see, the relationships between the formulas have 
  316.           remained intact. Were those cell references absolute, they would 
  317.           not have been altered by the move.
  318.  
  319.           Note that several worksheet functions give you the option to 
  320.           consider *all* cell references as absolute, and these include Copy 
  321.           and Move block, Insert and Delete row/column, and Replicate Cell.
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.           March 12, 1989                 p. 5                   Opus v. 2.00
  330.  
  331.  
  332.  
  333.  
  334.  
  335.           >>> Copy and Move Block
  336.  
  337.           These functions, along with Delete Block, are only available when 
  338.           a block is selected. So, to copy or move a block, first select 
  339.           one, and then move the cell cursor to the cell you wish to be the 
  340.           upper-left corner of the destination block. When you choose one of 
  341.           these, you will first be asked to confirm your selection, as there 
  342.           is no "Undo" function. Then, you will be asked whether to treat 
  343.           all cell references as absolute, including the relative ones. 
  344.           Generally, you'll want to choose "Relative," so that only the true 
  345.           absolute references will be considered absolute. And in any event, 
  346.           a relative reference will only be adjusted provided it points to a 
  347.           cell contained within the selected range, which consequently also 
  348.           changes position. As a final point, be aware that cells *outside* 
  349.           the source range containing formulas with cell references pointing 
  350.           within the source range will *not* be altered, even if the range 
  351.           is moved. For example, suppose cell F1 references cell A1, and you 
  352.           move the range A1:B2 to cell A3. F1 will continue to reference 
  353.           cell A1.
  354.  
  355.  
  356.           >>> Delete Block
  357.  
  358.           Permanently deletes a block.
  359.  
  360.  
  361.           >>> Insert and Delete Row/Column
  362.  
  363.           These functions allow you to specify whole or partial row and 
  364.           column insertion and deletion. As an illustration of "partial," a 
  365.           partial row is defined as follows. First, if no block is selected, 
  366.           the partial row extends from the active cell to the rightmost cell 
  367.           in that row. If a block is selected, then the partial row extends 
  368.           from the upper-left cell in the block to the rightmost cell in 
  369.           that row and within the block. For the sake of the operation, a 
  370.           "virtual block" is defined as consisting of the partial row plus 
  371.           all partial rows below it. A partial column is defined in an 
  372.           analogous manner. This allows a rather flexible definition of the 
  373.           extent of these operations, so that, for example, it's easy to 
  374.           insert a row at row #18, confined to columns F and G, rather than 
  375.           extending over the entire worksheet space (columns A..IU). Without 
  376.           the "partial" option, you would have to select the range F18:G998 
  377.           and then move it to cell F19. 
  378.  
  379.           Note: These operations are really block moves, and the description 
  380.           of the handling of cell references for block moves applies here as 
  381.           well.
  382.  
  383.  
  384.           >>> Data Fill
  385.  
  386.           This function fills a range with numbers, beginning at some 
  387.           initial value to which some increment value is added for each 
  388.           cell. You specify the direction of the data fill as "Right" or 
  389.           "Down."
  390.  
  391.  
  392.  
  393.  
  394.  
  395.           March 12, 1989                 p. 6                   Opus v. 2.00
  396.  
  397.  
  398.  
  399.  
  400.  
  401.           >>> Replicate Cell
  402.  
  403.           This function copies a cell throughout a range. If the cell 
  404.           contains a formula, then relative cell references are adjusted, 
  405.           provided you haven't click on the "Absolute" button in the dialog. 
  406.           Note that it doesn't matter whether cell references point to cells 
  407.           within the selected range, as it does for block copying and 
  408.           moving.
  409.  
  410.  
  411.           >>> Sort
  412.  
  413.           This function uses the ShellSort algorithm to sort a range on a 
  414.           row or column basis. For example, consider the range A1:C10, which 
  415.           is to be sorted by row. For "Key Cell," I specify cell B1, meaning 
  416.           cells in column B are compared. Then rows 1-10 are sorted based on 
  417.           the values in column B, for columns A-C. You may also specify 
  418.           ascending (low to high) vs descending (high to low) as the "sense" 
  419.           of the sort. The precedence of cells is as follows, from lowest to 
  420.           highest:
  421.                1. Empty cells
  422.                2. Values (numeric or formula cells)
  423.                3. Labels.
  424.           Note that relative cell references in formulas aren't affected by 
  425.           the sorting operation (in other words, any cell reference is 
  426.           treated as if it's absolute).
  427.  
  428.  
  429.           >>> Auto Cursor
  430.  
  431.           To illustrate this feature, select a range and position the cursor 
  432.           anywhere within it, except the last cell. Now press RETURN, and 
  433.           observe, the cursor advances to the next cell. You may specify the 
  434.           direction for the auto cursor through the Options menu, and you 
  435.           may also turn it off. This feature comes in really handy when you 
  436.           have a lot of numbers to enter, as you can first select a range 
  437.           and then enter the data solely through the numeric keypad. The 
  438.           worksheet also scrolls properly if the range extends beyond the 
  439.           displayed portion.
  440.  
  441.           And that about does it for the block operations. Let's forge ahead 
  442.           and consider formulas and functions, but first a few words about 
  443.           recalculation modes.
  444.  
  445.  
  446.           >>> Recalculation
  447.  
  448.           Opus provides natural order recalculation, meaning that during 
  449.           evaluation of a formula, any cell references are calculated before 
  450.           their values are used. This ensures that formulas containing 
  451.           references to other cells are calculated based upon up to date 
  452.           values.
  453.  
  454.           Opus also provides an automatic recalculation feature, meaning 
  455.           that if you change the value of a cell that is referenced by some 
  456.           formula, that formula will be recalculated automatically. This is 
  457.           a little different from other spreadsheets that provide a similar 
  458.           function, in that Opus doesn't recalculate the entire spreadsheet, 
  459.  
  460.  
  461.           March 12, 1989                 p. 7                   Opus v. 2.00
  462.  
  463.  
  464.  
  465.  
  466.  
  467.           but rather, just those cells that are affected by the change. This 
  468.           method (also called minimal recalculation) can be much faster for 
  469.           large worksheets and literally makes this a usable feature. How 
  470.           does Opus know what cells are affected? Briefly, each cell that is 
  471.           referenced by a formula has a "dependent cell list," and when you 
  472.           change the value of such a cell, Opus can traverse this list and 
  473.           recalculate all the other cells that depend on the cell's value. 
  474.           Note that having a dependent cell list requires a cell to exist, 
  475.           meaning it consumes memory. Be aware that range references within 
  476.           formulas cause an entry to be placed in the dependent cell list of 
  477.           every cell within the range, and the cells will be created as 
  478.           necessary. This precludes the use of arbitrarily large ranges in 
  479.           formulas, lest you're fond of "out of memory" errors.
  480.  
  481.           Finally, note that you may turn off natural order and automatic 
  482.           recalculation through the "Options" menu. With both turned off, 
  483.           recalculation proceeds in a row by row fashion, which can be 
  484.           useful in some applications (the supplied amortization spreadsheet 
  485.           depends on it). Now, it may rarely be necessary to turn off these 
  486.           features, so that Opus may complete the recalculation; you will be 
  487.           informed of this with a friendly alert box. For example, consider 
  488.           the worksheet below:
  489.  
  490.                A         B         C...........IT      IU
  491.             1  B1+1      C1+1      D1+1.......IU1+1    A2+1
  492.             2  B2+1      C2+1      D2+1.......IU1+1    A3+1
  493.             .
  494.             .
  495.           100  B100+1    C100+1    D100+1.....IU100+1   1
  496.  
  497.           In order to calculate cell A1 using natural order, the value of 
  498.           cell B1 must be known. But to calculate B1, the value of C1 must 
  499.           be known. And so on, for 25,500 cells. Essentially, this involves 
  500.           a recursive algorithm, that is, a function that calls itself. If 
  501.           this function was allowed to call itself 25,500 times without 
  502.           returning in the meantime, the machine would surely crash. But 
  503.           don't worry, this can't happen in Opus 2.00; at worst, you will be 
  504.           informed of this state with an alert, "Stack is nearing 
  505.           overflow...", and you should then turn off natural order and/or 
  506.           automatic recalculation. In general, you'll never see this alert, 
  507.           as it requires a fairly large and somewhat contrived spreadsheet 
  508.           before it appears. This worksheet also confounds determination of 
  509.           circularity for similar reasons; it most definitely will cause the 
  510.           "???" icon to appear in the Panel.
  511.  
  512.  
  513.           >>> Global Recalculation
  514.  
  515.           When you select "Recalculate" from the "Options" menu or press F1, 
  516.           Opus recalculates the entire spreadsheet, and this is called a 
  517.           global recalculation. Natural order will be used, provided it 
  518.           hasn't been turned off. However, the state of the automatic 
  519.           recalculation mode isn't relevant here, since we're recalculating 
  520.           the entire worksheet.
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.           March 12, 1989                 p. 8                   Opus v. 2.00
  528.  
  529.  
  530.  
  531.  
  532.  
  533.           >>> Formulas
  534.  
  535.           Formulas in Opus consist of valid arithmetic expressions, composed 
  536.           of the following:
  537.  
  538.                - numbers, followed by an optional percent sign
  539.                - cell references
  540.                - arithmetic operators +, -, *, and /
  541.                - logical operators =, <>, <, <=, >, >=
  542.                - unary minus, "-" (i.e. negation operator)
  543.                - functions and their parameter lists, but without the silly 
  544.                     '@' sign required by other spreadsheets
  545.                - expressions in parentheses.
  546.  
  547.           Numbers have 17 decimal digits of precision, and the range is     
  548.           +/- 1E-37 ... +/- 1E37 or thereabouts.
  549.  
  550.           At present, Opus doesn't support strings in formulas or string 
  551.           functions; a future update likely will. The maximum formula length 
  552.           is 100 characters. Opus follows the usual rules of operator 
  553.           precedence, summarized below, from highest to lowest:
  554.  
  555.                - unary minus
  556.                - expressions in parentheses
  557.                - *, /
  558.                - +, -
  559.                - =, <>, <, <=, >, >=
  560.  
  561.           Operators with equal precedence are evaluated left to right, so 
  562.           that 6/3/4 is interpreted as (6/3)/4, rather than 6/(3/4). 
  563.  
  564.  
  565.           >>> Functions
  566.  
  567.           The heart of any spreadsheet lies in its list of functions; Opus 
  568.           provides some 59 functions, which I will divide into the following 
  569.           categories: Arithmetic, Power, Trig, Logical, Statistics, 
  570.           Regression, Probability, Financial, Lookup, Cell, Range, and 
  571.           Miscellaneous. Please note that range references are written as 
  572.           two cell references separated by the colon, as in "A1:F5".
  573.  
  574.  
  575.           >>> Arithmetic
  576.  
  577.                - DIV, MOD (numerator, denominator)
  578.  
  579.                     These are division and modulus functions that satisfy 
  580.                     the equation below (for both real and integer values):
  581.  
  582.                     x = DIV(x,y)*y+MOD(x,y)          
  583.  
  584.                - ABS (expr)
  585.  
  586.                     Returns the absolute value of expr.
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.           March 12, 1989                 p. 9                   Opus v. 2.00
  594.  
  595.  
  596.  
  597.  
  598.  
  599.           >>> Power
  600.  
  601.                - LN (expr)..............natural logarithm (base e)
  602.                - LOG (expr).............log base 10
  603.                - EXP (expr).............e raised to a power
  604.                - POW (expr1,expr2)......expr1 raised to expr2 power
  605.                - SQR (expr).............square
  606.                - SQRT (expr)............square root
  607.  
  608.           >>> Trig
  609.  
  610.                All the trig functions (except RAD) expect angles to be 
  611.                specified in radians, and the inverse trig functions return a 
  612.                radian value.
  613.  
  614.                - SIN, COS, TAN (angle)........sine, cosine, tangent
  615.                - ASIN, ACOS, ATAN (expr)......inverse functions
  616.                - SINH, COSH, TANH (angle).....hyperbolic sin, cos, tan
  617.                - ASINH, ACOSH, ATANH (expr)...inverse functions
  618.                - RAD (angle in degrees).......returns angle in radians
  619.                - DEG (angle in radians).......returns angle in degrees
  620.                - PI().........................returns pi
  621.  
  622.           >>> Logical
  623.  
  624.                Operators: =, <>, <, <=, >, >=
  625.  
  626.                IF (condition, action, alternate action)
  627.  
  628.                     The three IF parameters may be any valid expression, 
  629.                     including nested IFs. IF returns the value of "action" 
  630.                     when condition evaluates to non-zero, and it returns 
  631.                     "alternate action" when condition evaluates to zero.
  632.  
  633.                AND (expr1, expr2, expr3, ...)
  634.  
  635.                     Returns 1 if all parameters are non-zero, and 0 if any 
  636.                     evaluate to zero.
  637.  
  638.                OR (expr1, expr2, expr3, ...)
  639.  
  640.                     Returns 1 if any parameter is non-zero, and 0 only if 
  641.                     all evaluate to zero.
  642.  
  643.                NOT (expr)
  644.  
  645.                     Returns 1 if expr evaluates to zero, and 0 if expr 
  646.                     evaluates to non-zero.
  647.  
  648.                Both AND and OR require at least two parameters.
  649.  
  650.           >>> Statistical
  651.  
  652.                - SUM (range)
  653.  
  654.                     Computes sum of all values within range. Empty cells and 
  655.                     labels are considered to have value 0.
  656.  
  657.  
  658.  
  659.           March 12, 1989                p. 10                   Opus v. 2.00
  660.  
  661.  
  662.  
  663.  
  664.  
  665.                - PROD (range)
  666.  
  667.                     Computes product of all values within range. Empty cells 
  668.                     and labels are considered to equal 1. Should the range 
  669.                     contain no values, PROD returns 0.
  670.  
  671.                - MEAN (range)
  672.  
  673.                     Computes the mean or average of all values within range. 
  674.                     Empty cells and labels aren't considered.
  675.  
  676.                - VAR (range)
  677.  
  678.                     Computes the sample variance for range, ignoring empty 
  679.                     cells and labels.
  680.  
  681.                - SDEV (range)
  682.  
  683.                     Computes the sample standard deviation for range, 
  684.                     ignoring empty cells and labels.
  685.  
  686.                - SERR (range)
  687.  
  688.                     Computes the sample standard deviation of the mean (the 
  689.                     standard error) for range, again ignoring empty cells 
  690.                     and labels.
  691.  
  692.                - MAX, MIN (range)
  693.  
  694.                     Return the maximum and minimum values within the range.
  695.  
  696.                - COUNT (range)
  697.  
  698.                     Returns the number of cells containing values within 
  699.                     range.
  700.  
  701.           >>> Regression
  702.  
  703.                Note that these three functions all require the "Type" 
  704.                parameter, which is explained under REGR.
  705.  
  706.                - REGR (type, y-range, x-range)
  707.  
  708.                     Performs linear regression via the least squares method 
  709.                     on any of the following models:
  710.  
  711.                     Type      Equation       Model
  712.  
  713.                       0       y = Mx+B       Linear
  714.                       1       y = Be^(Mx)    Exponential
  715.                       2       y = B+M*ln(x)  Logarithmic
  716.                       3       y = Bx^M       Power
  717.  
  718.                     Please note that Opus performs the proper transformation 
  719.                     on the data for you, so you aren't required to have a 
  720.                     separate column for e^x to use the exponential model, 
  721.                     for example. REGR returns the value "M" in the cell 
  722.                     containing the formula and the value "B" in the cell 
  723.  
  724.  
  725.           March 12, 1989                p. 11                   Opus v. 2.00
  726.  
  727.  
  728.  
  729.  
  730.  
  731.                     immediately to its right. "B" will overwrite this cell, 
  732.                     so make sure you store no data there!
  733.  
  734.                - PREDV (type, y-range, x-range, x-expr)
  735.  
  736.                     This function calculates the value "y" based on the 
  737.                     regression parameters M and B for the value "x-expr". Be 
  738.                     aware it is more time and memory efficient to simply 
  739.                     plug the number into the proper equation, provided of 
  740.                     course you have already determined M and B through REGR.
  741.  
  742.                - CORR (type, y-range, x-range)
  743.  
  744.                     CORR rounds out the regression functions. It calculates 
  745.                     the correlation coefficient, which is a measure of 
  746.                     goodness of fit.
  747.  
  748.                The regression functions allow empty cells within their 
  749.                ranges. X and y values are associated by their cell locations 
  750.                within their respective ranges, not by the number of empty 
  751.                cells that may separate them. For example, consider the range 
  752.                A1:A5 below:
  753.  
  754.                          A    B
  755.                     1    1
  756.                     2  empty
  757.                     3  empty
  758.                     4    2
  759.                     5    3
  760.  
  761.                For the sake of the regression calculation, value 1 is cell 
  762.                A1, value 2 is cell A2, and so on. It is perfectly legal to 
  763.                have an x-value without a corresponding y-value; that x-value 
  764.                will simply be discarded from the calculation. However, the 
  765.                reverse is not true; should you specify a y-value without a 
  766.                corresponding x-value, any of these functions will return an 
  767.                error. I chose Opus to work in this manner because in my 
  768.                work, I'm often collecting sets of data from several trials 
  769.                of the same experiment, where the known values are the same 
  770.                from trial to trial. Occasionally, during a trial one of the 
  771.                data points gets botched, and it should be discarded from the 
  772.                calculation. By simply deleting the cell which would 
  773.                otherwise contain that y-value, I can use the same template 
  774.                for analyzing all the data sets. (I wish my Hewlett-Packard 
  775.                calculator worked this way; instead, it forces me to delete 
  776.                any x value without a corresponding y value, altering the 
  777.                relationships between other data sets which may be in its 
  778.                memory)
  779.  
  780.                Finally, all the regression functions allow ranges spanning 
  781.                more than one column or row. Values are associated on a row 
  782.                by row basis.
  783.  
  784.           >>> Probability
  785.  
  786.                RAND (lower bound, upper bound)
  787.  
  788.                     Returns a random number between the given lower and 
  789.  
  790.  
  791.           March 12, 1989                p. 12                   Opus v. 2.00
  792.  
  793.  
  794.  
  795.  
  796.  
  797.                     upper bounds. The difference between these two numbers 
  798.                     must be less than 16,277,216, since this is the range of 
  799.                     the ST's random number generator.
  800.  
  801.                COMB, PERM (x, y)
  802.  
  803.                     Combinations and permutations of x objects taken y at a 
  804.                     time.
  805.  
  806.           >>> Financial
  807.  
  808.                These functions operate somewhat differently from those in 
  809.                the original version of Opus. First, all parameters are 
  810.                required. Second, I've adopted a convention taken by my HP-
  811.                27S calculator and also, at least, by the Microsoft 
  812.                spreadsheet Excel. This involves breaking down money values 
  813.                into cash inflows, which are expressed as positive numbers, 
  814.                and cash outflows, expressed as negative numbers. For 
  815.                example, the PMT function will normally return a negative 
  816.                value, as you are "paying money." I found this method 
  817.                confusing at first, but I grew to prefer it, and since I 
  818.                (occasionally) like to support standards...
  819.  
  820.                The "type" argument appears in all the financial functions, 
  821.                and if equal to 1, it indicates payments occur at the ends of 
  822.                periods (ordinary annuities). If type equals 0, payments are 
  823.                assumed to occur at the beginning of periods (annuities due). 
  824.                Note that for some combinations of arguments, namely those 
  825.                implying a simple or compound interest calculation, the type 
  826.                field will be meaningless; nevertheless, it is required as a 
  827.                place-holder.
  828.  
  829.                The number of compounding periods should be whatever is most 
  830.                appropriate; for example, 365*n for daily compounding over n 
  831.                years. The rate arguments refer to the interest rate per 
  832.                compounding period, so for monthly compounding over 1 year at 
  833.                12% interest, rate would equal 12%/12, or 1%, while # periods 
  834.                would equal 12.
  835.  
  836.                For working, real world examples of the financial functions, 
  837.                I refer you to the files "FINCALC.OPS" and "AMORTIZE.OPS."
  838.  
  839.  
  840.                - PV (rate, # periods, payment, future value, type)
  841.  
  842.                     Computes present value.
  843.  
  844.                - FV (rate, # periods, payment, present value, type)
  845.  
  846.                     Computes future value.
  847.  
  848.                - NPER (rate, payment, present value, future value, type)
  849.  
  850.                     Calculates number of periods.
  851.  
  852.                - PMT (rate, # periods, present value, future value, type)
  853.  
  854.                     Calculates payment.
  855.  
  856.  
  857.           March 12, 1989                p. 13                   Opus v. 2.00
  858.  
  859.  
  860.  
  861.  
  862.  
  863.                - RATE (#periods, payment, present value, future value, type, 
  864.                        guess)
  865.  
  866.                     Computes interest rate. RATE uses an iterative method 
  867.                     (Newton's) to find rate; it requires a "guess value" to 
  868.                     seed the process, and you should try using a value less 
  869.                     than what you expect RATE to return. (Good starting 
  870.                     points for guess are values like 0.01, 0.001, etc.) RATE 
  871.                     returns an error if it can't find a reasonably accurate 
  872.                     solution within 20 iterations.
  873.  
  874.                The financial functions are based on the following equation, 
  875.                and RATE successfully returns if it finds an interest rate 
  876.                that satisfies the equation to an accuracy of 1E-8. (Equation 
  877.                from Hewlett Packard 27S calculator manual)
  878.  
  879.                     0 = PV+(1+(i%*S)/100)*PMT*USPV+FV*SPPV,
  880.  
  881.                 where
  882.  
  883.                     S = payment mode (0 for end mode, 1 for begin mode. Note 
  884.                          this is exactly opposite to what the functions 
  885.                          expect as an argument; the value 1 seemed more 
  886.                          logical than 0 to indicate a date later in the 
  887.                          period.)
  888.                     i% = periodic interest rate
  889.                     n  = number of compounding periods
  890.                     SPPV = (1+i%/100)^-n
  891.                     USPV = (1-(1+i%/100)^-n)/(i%/100)
  892.  
  893.           >>> Lookup
  894.  
  895.                - INDEX (row index, column index, range)
  896.  
  897.                     INDEX returns the value of a cell within range, located 
  898.                     by row and column index, which must be numbers greater 
  899.                     than or equal to one. These indices represent offsets 
  900.                     into the range, such that the upper-left corner of the 
  901.                     range has 1,1 for its indices. For example, 
  902.                     INDEX(1,1,A1:B5) returns the value of A1, while 
  903.                     INDEX(3,2,A1:B5) returns the value of B3 (row 3 and 
  904.                     column 2 within the range A1:B5).
  905.  
  906.                - VLOOKUP (value, column index, range)
  907.  
  908.                     VLOOKUP searches in the first column of the indicated 
  909.                     range for the greatest value less than or equal to the 
  910.                     value you supplied, and it returns the value in the same 
  911.                     row as this cell, with the column determined by "column 
  912.                     index" as an offset into the range. Like INDEX above, a 
  913.                     value of 1 indicates the first column within the range, 
  914.                     2 the second, and so on. The function is a "vertical 
  915.                     lookup," as it searches in the vertical direction. An 
  916.                     error occurs if no match is found or the index 
  917.                     references a column outside the block.
  918.  
  919.  
  920.  
  921.  
  922.  
  923.           March 12, 1989                p. 14                   Opus v. 2.00
  924.  
  925.  
  926.  
  927.  
  928.  
  929.                - HLOOKUP (value, row index, range)
  930.  
  931.                     This function is exactly analogous to VLOOKUP, except 
  932.                     that it performs a horizontal lookup. That is, it 
  933.                     searches the first row of the indicated range, looking 
  934.                     for a value less than or equal to the value you 
  935.                     supplied, and it returns the value in the same column as 
  936.                     this cell but in the row indicated by "row index." 
  937.                     Again, the row index is an offset into the range, such 
  938.                     that row index = 1 indicates the first row of the range.
  939.  
  940.           >>> Cell
  941.  
  942.                - ISERR (cell ref)
  943.  
  944.                     Returns 1 if the cell referenced has an error status and 
  945.                     0 otherwise.
  946.  
  947.                - ROW, COLUMN (cell ref)
  948.  
  949.                     Return the row and column number of the argument.
  950.  
  951.           >>> Range
  952.  
  953.                - ROWS, COLUMNS (range)
  954.  
  955.                     Return the number of rows or columns in the range 
  956.                     supplied.
  957.  
  958.           >>> Miscellaneous
  959.  
  960.                - FAC (expr)
  961.  
  962.                     Computes the factorial of expr, which must be an integer 
  963.                     such that 0 <= expr <= 33.
  964.  
  965.                - ROUND, TRUNC (expr, place)
  966.  
  967.                     These functions take an expression and either round or 
  968.                     truncate it to the value specified by "place." Place may 
  969.                     be positive, negative or zero, and I think an example 
  970.                     will clarify the differences. Consider the number 
  971.                     126.556, supplied to ROUND and TRUNC, for the following 
  972.                     values of place:
  973.  
  974.                     expr = 126.556
  975.  
  976.                     place         ROUND          TRUNC
  977.                       2            126.56         126.55
  978.                       1            126.6          126.5
  979.                       0            127            126
  980.                      -1            130            120
  981.                      -2            100            100
  982.                      -3              0              0
  983.  
  984.                     As you can see, you can round or truncate within the 
  985.                     whole number portion of the expression, as well as 
  986.                     within the fractional portion.
  987.  
  988.  
  989.           March 12, 1989                p. 15                   Opus v. 2.00
  990.  
  991.  
  992.  
  993.  
  994.  
  995.           >>> Cell Status
  996.  
  997.           Every living cell has an associated status which tells Opus 
  998.           whether it's full, empty, or for some reason generated an error. 
  999.           Error-trapping in formula evaluation is extensive, and I think, 
  1000.           complete. For example, if a formula caused a division by zero, the 
  1001.           cell will display a "DivBy0" error message, and any cell that 
  1002.           referenced it will also assume this status upon recalculation. 
  1003.           There are several other error messages, and they are used 
  1004.           depending on the nature of the offense. The syntax error is a 
  1005.           special case; should you enter a formula that's semantically 
  1006.           incorrect, Opus will "keep you in that cell" and (usually) place 
  1007.           the cursor near the source of the error in the edit area. 
  1008.  
  1009.           Users of the original version will be glad to hear that Opus will 
  1010.           no longer crash upon floating point overflows; this was an 
  1011.           additional benefit of putting Personal Pascal on the shelf and 
  1012.           rewriting Opus in Mark Williams C. Now, floating point overflows 
  1013.           will display as "a very large number." There remains only one 
  1014.           loose end in the error-checking; Mark Williams C is supposed to 
  1015.           set a certain variable when the library function "pow" overflows, 
  1016.           and it doesn't. Thus, the spreadsheet function POW and several 
  1017.           others, including the financial functions, will generate "a very 
  1018.           large number" upon pow overflow, and the cell status won't reflect 
  1019.           the error condition. Hopefully, MW Co. will correct this in a 
  1020.           future compiler update.
  1021.  
  1022.  
  1023.           >>> Named Cell and Range References
  1024.  
  1025.           Opus v. 2.00 and above support named cell and range references, so 
  1026.           that you may give a cell or range a friendly English-language name 
  1027.           for use within formulas. These "aliases" may be up to 10 
  1028.           characters long; they consist of alphanumeric characters and the 
  1029.           underscore and may not begin with a numeral. Also, you aren't 
  1030.           allowed to create a name that duplicates a valid cell reference or 
  1031.           a function name. Opus supports as many as 100 of these aliases, 
  1032.           and you create them through the Define Name dialog, which is found 
  1033.           under the Options menu. To use this feature, enter the name you 
  1034.           wish to define in the "Name:" line and also the cell or range 
  1035.           reference (using dollar signs to indicate absoluteness) in the 
  1036.           "Refers To:" line. Then, add it to the list by clicking "Add." The 
  1037.           name will appear in the scrollable list (which is always sorted), 
  1038.           and it will be available for use in functions. To delete a name, 
  1039.           click on it and then click "Delete." It will be removed, and all 
  1040.           occurrences of that name within the worksheet will be replaced by 
  1041.           the underlying explicit cell or range reference. Note that when 
  1042.           you click on one of the names in the list, Opus places that name 
  1043.           and its value in the two editable fields below the list. As long 
  1044.           as you don't alter the name itself, you may then modify the 
  1045.           "Refers To:" line and click on "Add" to lock in the modification. 
  1046.           When deleting or altering names, there may be a slight delay as 
  1047.           Opus performs some housekeeping (converting names to explicit 
  1048.           references, validating what in effect may be completely new 
  1049.           formulas, updating dependency lists, etc.). Bear in mind these 
  1050.           named references behave exactly like explicit ones, following the 
  1051.           same rules governing adjustment for worksheet operations such as 
  1052.           copy, move, insert row, and others previously described. You may 
  1053.  
  1054.  
  1055.           March 12, 1989                p. 16                   Opus v. 2.00
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.           notice when copying, moving, or replicating formulas that Opus 
  1062.           substitutes the explicit reference for the named reference. This 
  1063.           happens when a named reference needs to be adjusted; there just 
  1064.           isn't any good way to make a single name point to more than one 
  1065.           cell or range! However, this substitution will not be applied to 
  1066.           completely absolute named cells or ranges, since these are never 
  1067.           adjusted.
  1068.  
  1069.  
  1070.           >>> Files
  1071.  
  1072.           You may save and load whole worksheets and blocks; block files 
  1073.           consist solely of data, while worksheet files contain the data, 
  1074.           all the user settings, and the four charts. A block may be merged 
  1075.           into the current worksheet, while loading a file causes the 
  1076.           current worksheet to be erased.
  1077.  
  1078.           File operations are much faster in Opus 2.00, largely due to use 
  1079.           of a custom 10 sector buffering scheme. In other words, Opus 
  1080.           always reads or writes 10 sectors worth of data when it accesses 
  1081.           the disk, unless of course there simply isn't enough data to fill 
  1082.           10 sectors. The speed increase is truly remarkable, and to take 
  1083.           full advantage of it on floppies, be sure to use a "twisted" disk 
  1084.           formatted for 10 sectors/track.
  1085.  
  1086.           Please note that Opus 2.00 files are not compatible with the 
  1087.           original; too many fundamental changes were made. However, I will 
  1088.           maintain compatibility with this version in future updates.
  1089.  
  1090.  
  1091.           >>> Printing
  1092.  
  1093.           You control worksheet printing through the Print dialog, found 
  1094.           under the File menu. You may enter two title lines, and these will 
  1095.           appear on the first page only. Opus supports one-line headers and 
  1096.           footers; you may easily include such things as page number, file 
  1097.           name, date, and time, and any part of a header and footer may be 
  1098.           left, right, or center justified. To see how to accomplish this, 
  1099.           please refer to the Help menu item Print/Save As Text. The only 
  1100.           really new features here are the margin and lines/page fields; 
  1101.           margins are specified as number of characters or lines from the 
  1102.           respective side of the page. For example, a right margin of 5 will 
  1103.           leave a 5 character margin on the right side of the page. The 
  1104.           other Print dialog options should be reasonably self-explanatory.
  1105.  
  1106.           In order for features such as condensed print and draft vs. final 
  1107.           to work, Opus needs to know the proper control codes for your 
  1108.           printer. Since these are everything but standardized, I've 
  1109.           included a program, PRINTDEF.PRG, so that you may customize Opus 
  1110.           for your printer. Please see the file INSTALL.DOC for details on 
  1111.           PRINTDEF.
  1112.  
  1113.           To wrap up this subject, you may also save a file as text, which 
  1114.           really means print a standard ASCII file to disk. This file will 
  1115.           include titles, headers, footers, etc., but it will not contain 
  1116.           any text special effects (naturally).
  1117.  
  1118.  
  1119.  
  1120.  
  1121.           March 12, 1989                p. 17                   Opus v. 2.00
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.           >>> Freeze Titles
  1128.  
  1129.           To freeze a row and/or column, position the cell-cursor in the 
  1130.           *last* row or column on the screen you wish to freeze. For 
  1131.           example, suppose you have rows 5 through 20 on the screen, and you 
  1132.           want to freeze rows 5-15. Place the cell cursor in row 15, and 
  1133.           choose Freeze Titles from the Options menu. Select Row and press 
  1134.           OK. Now, you may scroll downwards, while the frozen rows remain on 
  1135.           screen; you are also prevented from advancing the cursor above row 
  1136.           16. This can be very useful when you have labels over several 
  1137.           lines that you'd like to keep in view at all times. Although 
  1138.           freezing affects the screen appearance, it has no effect on 
  1139.           printing.
  1140.  
  1141.  
  1142.           >>> Defaults
  1143.  
  1144.           Opus 2.00 allows you to save your favorite settings in a 
  1145.           configuration file, OPUS.CNF, which is loaded at boot-time. This 
  1146.           file contains default path information, worksheet options, and 
  1147.           chart options. You may change the defaults and save a new 
  1148.           configuration file through the Defaults item under the File menu. 
  1149.           To change paths, click on the path lines and select a new one with 
  1150.           the item selector. Besides the paths, OPUS.CNF contains the 
  1151.           following items:
  1152.  
  1153.                - global column width
  1154.                - global cell format
  1155.                - auto-cursor status and direction
  1156.                - natural order and automatic recalculation statuses
  1157.                - show formulas status
  1158.                - grid on/off
  1159.                - small font (for monochrome)
  1160.                - printer:
  1161.                     - show row/column titles
  1162.                     - condensed print status
  1163.                     - show formulas status
  1164.                     - header
  1165.                     - footer
  1166.                     - draft vs. final
  1167.                     - top, bottom, left, and right margins
  1168.                     - lines/page
  1169.                - charts:
  1170.                     - all user-controlled options (except selected ranges), 
  1171.                       taken from current active chart
  1172.  
  1173.           Note: The Temporary Files path refers to the path where the 
  1174.           temporary metafile and worksheet files will be saved during chart 
  1175.           printing. More to come...
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.           March 12, 1989                p. 18                   Opus v. 2.00
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.                    ///////////////////////////////////////////////
  1194.                    /////               Charts                /////
  1195.                    ///////////////////////////////////////////////
  1196.  
  1197.  
  1198.  
  1199.           NOTE: If GDOS isn't installed, you won't be able to chart. If you 
  1200.           aren't sure how to create a proper ASSIGN.SYS or OPUS.WID file, 
  1201.           please see INSTALL.DOC for instructions (it's really pretty easy, 
  1202.           as I've written two short programs to facilitate the process).
  1203.  
  1204.  
  1205.           >>> The Basics
  1206.  
  1207.           The charting facility is implemented as a mode separate from the 
  1208.           worksheet. To create a chart, you first select ranges from the 
  1209.           worksheet for the chart data sets, and then select To Chart from 
  1210.           the worksheet Chart menu. This takes you to a new screen and menu 
  1211.           bar, from which you may customize the chart's appearance and print 
  1212.           it. Opus displays the chart in a window whose maximum size is 8 
  1213.           inches wide by 5 inches tall, and the screen display is a very 
  1214.           close approximation of the final printer output. Finally, to get 
  1215.           back to the worksheet, select To Opus from the chart File menu. 
  1216.           Note that you can easily flip back and forth by pressing the 
  1217.           control-C key.
  1218.  
  1219.           In the following sections, I'll describe some of the charting 
  1220.           conventions. Since I feel the charting features are mostly 
  1221.           intuitively obvious, afterwards I will simply run through the menu 
  1222.           items and explain some of the subtler points, leaving the rest to 
  1223.           experimentation. However, it is probably a good idea to read the 
  1224.           section on saving metafiles and printing charts, which are found 
  1225.           under the "File" heading.
  1226.  
  1227.  
  1228.           >>> Axis Naming Conventions
  1229.  
  1230.           All chart types except Pie are essentially plots of the equation 
  1231.           y = f(x), where y is a variable that depends on the value of x. X 
  1232.           is typically associated with the horizontal axis and y with the 
  1233.           vertical, but since Opus allows rotation of the axes, this 
  1234.           distinction can become blurred. Since x is more properly referred 
  1235.           to as the "independent variable" and y as the "dependent 
  1236.           variable," I call the axes "Dependent Axis" and "Independent 
  1237.           Axis."
  1238.  
  1239.  
  1240.           >>> Data Series
  1241.  
  1242.           A data series is simply a set of values associated with an axis 
  1243.           variable. The Independent Axis may have only one associated data 
  1244.           series, but you may specify up to six Dependent Axis series, 
  1245.           identified by the letters A-F. To select a range as a data series, 
  1246.           first select a worksheet range, drop down the worksheet Chart 
  1247.           menu, and click on the desired item under the greyed-out "Data 
  1248.           Ranges" label. A small dialog appears, containing the range 
  1249.           definition. Press OK to complete the process, and the chosen menu 
  1250.           item will be checked to indicate it's in use. To delete a series, 
  1251.  
  1252.  
  1253.           March 12, 1989                p. 19                   Opus v. 2.00
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.           click on the appropriate menu item and click on the Clear button 
  1260.           within the select-range dialog.
  1261.  
  1262.           In order to produce a Pie chart, you must first select a range for 
  1263.           the Independent/Pie series (this one does double-duty). To produce 
  1264.           any of the other chart types, you must select at least one 
  1265.           dependent variable range. The dependent and independent variables 
  1266.           are associated exactly as for the worksheet regression functions. 
  1267.           That is, ranges may extend over more than one column; they are 
  1268.           associated on a row by row basis. Also, it is perfectly legal to 
  1269.           have an independent value without a corresponding dependent value, 
  1270.           but the reverse is not true.
  1271.  
  1272.           Finally, you may specify labels for the independent range for any 
  1273.           chart type except Pie; if the first cell within the independent 
  1274.           range is a label, all the rest must also be labels. The labels 
  1275.           have implicit values of 0, 1, 2, ...
  1276.  
  1277.  
  1278.           >>> Plotting Standard Error Bars and Regression Lines
  1279.  
  1280.           These may be automatically plotted, providing you've created the 
  1281.           formulas in the worksheet. Simply associate the ranges with the 
  1282.           appropriate data series. Note that for regression, you must select 
  1283.           the slope and y-intercept cells as a range, and the slope must be 
  1284.           the first cell in the range.
  1285.  
  1286.  
  1287.           >>> The Screen Display
  1288.  
  1289.           The size of the chart as displayed on the screen is very nearly 
  1290.           the same as the final printed size, and the relationships between 
  1291.           objects are practically identical between the screen and printer. 
  1292.           When you alter the chart size, you will find that the window 
  1293.           containing it expands or shrinks, and it is centered at all times. 
  1294.           The window size corresponds to the chart area, with a 0.1 inch 
  1295.           margin around all sides. It also reflects the "frame" that will 
  1296.           contain the chart when it's imported as a metafile into another 
  1297.           program.
  1298.  
  1299.           Since redrawing the screen can take a couple of seconds, I thought 
  1300.           it preferable to redraw the screen only when requested. Thus, you 
  1301.           may make many changes affecting a chart's appearance, and when 
  1302.           done, press 'D' to force a redraw. About the only time the chart 
  1303.           is drawn without the user's request is when he flips over from the 
  1304.           worksheet, changes the chart size, or selects a new chart with the 
  1305.           chart switcher.
  1306.  
  1307.  
  1308.           >>> Markers
  1309.  
  1310.           The objects indicating plotted points are called markers. For line 
  1311.           and scatter charts, the markers are as follows: data series A: 
  1312.           circle, B: square, C: up triangle, D: cross, E: down triangle, F: 
  1313.           plus. Bar, pie, and area markers are differentiated on the basis 
  1314.           of fill pattern. Be aware that in color, the circle marker may 
  1315.           appear as a plus sign at the standard size of 0.08 inches due to 
  1316.  
  1317.  
  1318.  
  1319.           March 12, 1989                p. 20                   Opus v. 2.00
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.           the limited resolution, but it will print fine (details on 
  1326.           altering the size follow).
  1327.  
  1328.  
  1329.           >>> The Chart Switcher
  1330.  
  1331.           Opus supports four charts per worksheet, and you select them 
  1332.           through the Chart Switcher dialog. This dialog is accessible from 
  1333.           both the worksheet Chart menu and the chart File menu. To restore 
  1334.           a chart to the default settings and clear all range definitions 
  1335.           for that chart, click on the Restore Defaults button.
  1336.  
  1337.  
  1338.           >>> Measuring
  1339.  
  1340.           Many dialogs allow you to alter the sizes of objects; Opus uses 
  1341.           inches for all measurements.
  1342.  
  1343.  
  1344.           >>> The File Menu
  1345.  
  1346.                A. Save Metafile...
  1347.  
  1348.                     Opus is capable of saving two types of metafiles, a 
  1349.                     standard one (.GEM) suitable for programs that read 
  1350.                     metafiles, like Publisher ST, and a special one (.GEO) 
  1351.                     intended for later printing by OutChart. Opus will ask 
  1352.                     you to specify the format before allowing you to choose 
  1353.                     a file name; choose "Standard" if you intend to load the 
  1354.                     metafile from another (unrelated) application and 
  1355.                     ".GEO" if you plan on printing the file from OutChart. 
  1356.                     Note: OutChart doesn't like standard metafiles at all; 
  1357.                     please feed it .GEO files, unless you enjoy "Corrupted 
  1358.                     Metafile" error messages (read on for explanation).
  1359.  
  1360.                     Although programs like Publisher ST allow scaling of 
  1361.                     imported metafiles, for best results you should keep the 
  1362.                     relative horizontal and vertical dimensions the same.
  1363.  
  1364.                     You may notice that the square marker types vary in size 
  1365.                     somewhat in a metafile imported into Publisher, even 
  1366.                     though the chart is set to the right size. This is 
  1367.                     simply a consequence of round-off error in calculating 
  1368.                     the size of the box on the screen (although the box is a 
  1369.                     square by metafile standards, some round-off error 
  1370.                     occurs depending on where the box is to be located on 
  1371.                     the screen or page). As you would expect, this effect 
  1372.                     decreases in significance as the resolution of the 
  1373.                     output device increases; that is, it's most noticeable 
  1374.                     on the color monitor and hardly noticeable on a 150 DPI 
  1375.                     printer. Before printing a chart, Opus saves a temporary 
  1376.                     metafile which it later interprets; Opus isn't afflicted 
  1377.                     with similar round-off errors because it uses some 
  1378.                     special metafile commands to ensure uniform sizes for 
  1379.                     markers. OutChart metafiles contain these special 
  1380.                     commands as well. Unfortunately, other programs wouldn't 
  1381.                     know how to interpret these special commands, so "Save 
  1382.                     Metafile" can also save a standard one that should be 
  1383.  
  1384.  
  1385.           March 12, 1989                p. 21                   Opus v. 2.00
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.                     compatible with any program that claims to load 
  1392.                     metafiles.
  1393.  
  1394.                B. Print...
  1395.  
  1396.                     Prints the chart. An option for a final formfeed is 
  1397.                     present, since some printer drivers execute a formfeed 
  1398.                     when Opus closes the printer workstation, but others 
  1399.                     don't. For details on sizing the chart and placing it on 
  1400.                     the page, please refer to Chart Dimensions under "The 
  1401.                     Edit Menu." See the file OUTCHART.DOC as well for an 
  1402.                     alternative to printing from within Opus.
  1403.  
  1404.                     To conserve memory, Opus loads the printer driver and 
  1405.                     fonts at print-time. The process is as follows:
  1406.                          1. Opus saves a metafile and the worksheet, in the 
  1407.                             path specified for Temporary files
  1408.                          2. Opus releases the worksheet memory and screen 
  1409.                             font memory to the system,
  1410.                          3. Opus loads the printer driver and fonts,
  1411.                          4. Opus reads in the metafile and prints the chart,
  1412.                          5. Opus releases the printer driver and font 
  1413.                             memory,
  1414.                          6. Opus reloads the screen fonts,
  1415.                          7. Opus reloads the worksheet,
  1416.                          8. Opus deletes the temporary metafile and 
  1417.                             worksheet file.
  1418.                     For this to work, several conditions must be satisfied. 
  1419.                     First, you must have your GDOS disk in the boot drive or 
  1420.                     have the files set up on a hard drive. Second, you must 
  1421.                     specify a drive with enough free space to store the 
  1422.                     temporary metafile and worksheet files (metafiles 
  1423.                     typically range 2-10K; worksheet files vary considerably 
  1424.                     more). Third, you must have enough free RAM in the 
  1425.                     system to load the printer driver and fonts. FONTWID.PRG 
  1426.                     provides this information, when you create your OPUS.WID 
  1427.                     file. When you first load Opus, before entering any 
  1428.                     data, check Statistics under the worksheet Options menu 
  1429.                     and make sure the System Memory is greater than or equal 
  1430.                     to the memory required to print, as given by FONTWID.
  1431.  
  1432.                     Although printing is a rather disk-intensive process, it 
  1433.                     really is pretty fast on a hard drive system. For best 
  1434.                     results on any system, set the Temporary Files path to a 
  1435.                     RAM disk, but make sure you have enough free RAM to 
  1436.                     print!
  1437.  
  1438.                     Finally, I should note that the ST's memory allocation 
  1439.                     system is flawed. Under some essentially unpredictable 
  1440.                     conditions, after printing you may find yourself with 
  1441.                     less worksheet RAM than before. This is due to memory 
  1442.                     fragmentation and is generally not a problem, unless 
  1443.                     your worksheet is already pushing the free RAM limits. 
  1444.                     In this case, you may find yourself with too little 
  1445.                     memory to reload the worksheet. To protect yourself from 
  1446.                     this, always save your worksheet before printing a 
  1447.                     chart. Fortunately, the fragmentation seems to occur 
  1448.                     only with the first printout; I've printed more than 10 
  1449.  
  1450.  
  1451.           March 12, 1989                p. 22                   Opus v. 2.00
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.                     charts in a single session with no problems beyond 
  1458.                     losing 30K of worksheet space due to the fragmentation.
  1459.  
  1460.                C. Load/Save Chart
  1461.  
  1462.                     Presently not implemented, since four charts are saved 
  1463.                     with the worksheet. If there's enough demand, I may add 
  1464.                     these in a future update.
  1465.  
  1466.                D. Chart Switcher...
  1467.  
  1468.                     Allows you to select any of the four charts. To simply 
  1469.                     switch from one chart to another without calling this 
  1470.                     dialog, press the appropriate number key.
  1471.  
  1472.  
  1473.           >>> The Edit Menu
  1474.  
  1475.                A. Axes
  1476.  
  1477.                     Allows you to fine-tune the axis appearance as needed. 
  1478.                     To switch from editing one axis to the other, click on 
  1479.                     the shaded title bar at the top of the dialog. I believe 
  1480.                     all the options are pretty self-explanatory, except "the 
  1481.                     axis crosses other axis at tic mark#" option. Opus 
  1482.                     always tries to determine a "nice" place for the axes to 
  1483.                     cross one another. You may override the default choice 
  1484.                     by clicking on the number field. This will highlight it 
  1485.                     and enable the up and down arrows beside it. You may 
  1486.                     then increase or decrease the value by clicking on the 
  1487.                     arrows. Note that tic# 0 refers to the lowest tic on the 
  1488.                     vertical axis and the leftmost tic on the horizontal 
  1489.                     one.
  1490.  
  1491.                B. Chart Dimensions
  1492.  
  1493.                     You may create charts of any size up to 8 inches wide by 
  1494.                     5 inches tall. You may specify the placement of the 
  1495.                     chart on the page through the left and top margin 
  1496.                     values. Some printer drivers support only an 8x10 inch 
  1497.                     area, such as my Migraph Deskjet drivers. Thus, to 
  1498.                     horizontally center a chart 7 inches wide and 5 inches 
  1499.                     tall, I specify 0.5 inches as my left margin (left 
  1500.                     margin = (8-7)/2). To vertically center the same chart, 
  1501.                     I specify 2.5 inches as the top margin (top margin = 
  1502.                     (10-5)/2). Some printer drivers may allow printing to 
  1503.                     the entire 8.5 inch width of a page (or 11 inch height), 
  1504.                     so you may have to experiment a bit to determine the 
  1505.                     proper offsets. Remember, when you create a chart AxB 
  1506.                     inches in size, these numbers include a 0.1 inch margin 
  1507.                     around the entire chart area.
  1508.  
  1509.                C. Legend
  1510.  
  1511.                     A legend allows you to give a label to each of the data 
  1512.                     series on multiple-series charts. The legend may appear 
  1513.                     to the right of the chart or below it, and the "legend 
  1514.                     labels" are preceded by the marker associated with the 
  1515.  
  1516.  
  1517.           March 12, 1989                p. 23                   Opus v. 2.00
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.                     series. To change the size of these legend markers, 
  1524.                     enter a new value into the Chart Dimensions dialog under 
  1525.                     the "Marker Size" field. For bar, pie, and area charts, 
  1526.                     the marker is a small filled box, and the size of these 
  1527.                     markers is twice the size entered under Marker Size (I 
  1528.                     did it this way so I could easily flip between scatter 
  1529.                     and bar charts and not worry about getting huge chart 
  1530.                     markers or tiny legend markers).
  1531.  
  1532.                     The Edit button allows you to create or modify the 
  1533.                     legend labels. You will note 12 lines in this dialog; 
  1534.                     the last six are for Pie charts, where each slice may 
  1535.                     have a legend entry. When you select a range for legend 
  1536.                     text from the worksheet, the labels are copied into the 
  1537.                     legend text array and are from that point separate from 
  1538.                     the worksheet.
  1539.  
  1540.                D. Pie Appearance
  1541.  
  1542.                     You may have pie slice values, percentages, and legend 
  1543.                     labels appear by the slices or within the legend, in 
  1544.                     various combinations. If you choose "By Slices" for some 
  1545.                     of these and have the standard legend appear to the 
  1546.                     right of the Pie, the slice labels may overlap the 
  1547.                     legend (sorry, but this is the only case where the chart 
  1548.                     doesn't get out of the way properly. Maybe next 
  1549.                     revision). To correct for this, you may enter a larger 
  1550.                     value for the Legend distance into the Chart Dimensions 
  1551.                     dialog.
  1552.  
  1553.                E. Scaling
  1554.  
  1555.                     Opus generally selects a nice numeric range for your 
  1556.                     data. To override the defaults, invoke the scaling 
  1557.                     dialog and click on the entry you wish to change (you 
  1558.                     may not edit it otherwise). It will be highlighted, 
  1559.                     indicating user settings are in effect. 
  1560.  
  1561.                F. Titles
  1562.  
  1563.                     Opus provides two-line titles for each axis and the 
  1564.                     chart itself. Independent axis titles are shown as I1: 
  1565.                     and I2:, while dependent axis titles are shown as D1: 
  1566.                     and D2:. Just as with legends, you may copy a worksheet 
  1567.                     range into the titles array. You may then edit or create 
  1568.                     new entries through the Titles dialog. To change font or 
  1569.                     special effects, click on the entry you wish to change, 
  1570.                     and the font selector will appear. To turn off titles, 
  1571.                     uncheck the box at the upper right of the title lines.
  1572.  
  1573.                G. Values by Markers
  1574.  
  1575.                     If this is in effect, Opus displays the underlying value 
  1576.                     of a marker in an appropriate place for scatter, line, 
  1577.                     bar, and stacked bar charts. Use Pie Appearance to 
  1578.                     perform this action for Pie charts.
  1579.  
  1580.  
  1581.  
  1582.  
  1583.           March 12, 1989                p. 24                   Opus v. 2.00
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.           >>> The Options Menu
  1590.  
  1591.                The items under this menu all act as on/off switches.
  1592.  
  1593.                A. Character Spacing
  1594.  
  1595.                     When on, Opus uses the information from OPUS.WID to 
  1596.                     determine the width of text on the printer. With this 
  1597.                     value, it's possible to scale the text string so that it 
  1598.                     occupies the same relative width on the screen as it 
  1599.                     does on the printer, allowing a much better screen 
  1600.                     approximation of the final output. This can be very 
  1601.                     important, since many screen fonts are much wider than 
  1602.                     their printer counterparts; it's especially important 
  1603.                     when you want to display text centered within a box, as 
  1604.                     for a chart legend, because the box dimensions are 
  1605.                     calculated based on the size of the string. 
  1606.  
  1607.                     Note that when turned on, characters may overlap. This 
  1608.                     can be especially bad for the vertical axis title on a 
  1609.                     color system, but remember, the true extent of the text 
  1610.                     is shown (even though it may not be readable!).
  1611.  
  1612.                     Although this feature has no effect upon printing, it 
  1613.                     should be left on when saving a standard metafile. That 
  1614.                     way, object dimensions are calculated based upon printer 
  1615.                     font widths. When you import such a metafile into 
  1616.                     Publisher ST, the strings may appear to exceed the 
  1617.                     boundaries of a legend box, for example, since Publisher 
  1618.                     doesn't perform the "width scaling" on metafile text 
  1619.                     that it does on regular text. Fear not, the metafile 
  1620.                     will print correctly! If you had saved the metafile 
  1621.                     without character spacing, it would look perfect on the 
  1622.                     screen in Publisher ST, but the legend box would print 
  1623.                     too large, leaving a very noticeable gap at the right 
  1624.                     border of the box. This is a true tradeoff, and it's a 
  1625.                     consequence of the NON-device independence of GDOS fonts 
  1626.                     (I want display Postscript!)
  1627.  
  1628.                B. Regression
  1629.  
  1630.                     This causes regression lines to be displayed for scatter 
  1631.                     charts, provided you have defined ranges for the 
  1632.                     regression values. Although you may perform regression 
  1633.                     on non-linear models, at present Opus only plots the 
  1634.                     linear model properly (others may be supported in future 
  1635.                     releases).
  1636.  
  1637.                C. Rotate Axes
  1638.  
  1639.                     Makes the current horizontal axis vertical and the 
  1640.                     current vertical axis horizontal.
  1641.  
  1642.                D. Show Border
  1643.  
  1644.                     Draws a full box around all charts except Pie.
  1645.  
  1646.  
  1647.  
  1648.  
  1649.           March 12, 1989                p. 25                   Opus v. 2.00
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.                E. Standard Error Bars
  1656.  
  1657.                     This causes the error bars to be displayed, provided you 
  1658.                     have defined ranges for the error values. Available for 
  1659.                     scatter, line, and bar charts.
  1660.  
  1661.  
  1662.           >>> The Types Menu
  1663.  
  1664.                A. Area
  1665.  
  1666.                     Plots an area chart. All dependent values should be 
  1667.                     either positive or negative, with no mixing (or, if 
  1668.                     anyone can tell me a meaningful way to plot an area 
  1669.                     chart with both positive and negative values, I'll try 
  1670.                     to implement it). Maximum number of independent axis 
  1671.                     values (categories): 48.
  1672.  
  1673.                B. Bar
  1674.  
  1675.                     Plots a bar chart. Use Bar Spacing to vary width of bars 
  1676.                     and distance of bars from tics. Maximum number of 
  1677.                     categories: 48.
  1678.  
  1679.                C. Line
  1680.  
  1681.                     Essentially a "connect the dots" scatter plot. No limit 
  1682.                     to number of points.
  1683.  
  1684.                D. Pie
  1685.  
  1686.                     Plots a pie chart with up to 12 slices. You may explode 
  1687.                     any number of slices by clicking on them. Both the Chart 
  1688.                     titles and horizontal axis title are printed, if 
  1689.                     defined.
  1690.  
  1691.                E. Scatter
  1692.  
  1693.                     Scatter plot. No formal limit to number of data points.
  1694.  
  1695.                F. Stacked Bar
  1696.  
  1697.                     The cautions described for area charts apply here as 
  1698.                     well.
  1699.  
  1700.  
  1701.           >>> The Special Menu
  1702.  
  1703.           Currently, Fill Pattern is the only item available, but object 
  1704.           oriented drawing features may appear here in a future release. To 
  1705.           change the fill pattern for a series, select the series number 
  1706.           from the Fill Pattern dialog (#1-6 = ranges A-F, while #7-12 refer 
  1707.           to the remaining pie slices). Then click on the new pattern and 
  1708.           press OK. If you are viewing a bar, pie, or stacked bar chart, 
  1709.           simply double-click within a marker belonging to the series you 
  1710.           wish to change; the Fill Pattern dialog will appear, indicating 
  1711.           the chosen series. Pie slices are numbered from 1-12, counter-
  1712.           clockwise.
  1713.  
  1714.  
  1715.           March 12, 1989                p. 26                   Opus v. 2.00
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.           >>> Future Plans
  1722.  
  1723.           Although I feel this version of Opus is quite complete, there 
  1724.           remain several things I would like to add, such as date/time and 
  1725.           string functions to the worksheet. Also high on my list of 
  1726.           priorities is implementation of some simple object oriented 
  1727.           drawing features for the charting facility. Another possibility is 
  1728.           a curve-fitting feature, which would generate a smooth curve 
  1729.           through a series of points. Finally, I'm always open to ideas, so 
  1730.           let me know what you would like to see.
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748.  
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.           March 12, 1989                p. 27                   Opus v. 2.00
  1782.  
  1783.